package com.atguigu.gmall.realtime.utils

import redis.clients.jedis.{Jedis, JedisPool, JedisPoolConfig}

/**
 * @author caodan
 * @date 2022-08-23 20:10
 * @version 1.0
 */
object RedisUtil {


  var jedisPool: JedisPool = _

  /**
   * 获取jedis连接
   * 存储kafka提交的偏移量 group + topic + partition（GTP）
   * redis 的存储结构 hash
   * key 为 group + topic
   * value 为偏移量
   *
   * @return 连接对象
   */
  def getJedisConn: Jedis = {
    if(jedisPool == null ){
      val jedisPoolConfig = new JedisPoolConfig()
      jedisPoolConfig.setMaxTotal(100) //最大连接数
      jedisPoolConfig.setMaxIdle(20) //最大空闲
      jedisPoolConfig.setMinIdle(20) //最小空闲
      jedisPoolConfig.setBlockWhenExhausted(true) //忙碌时是否等待
      jedisPoolConfig.setMaxWaitMillis(5000) //忙碌时等待时长 毫秒
      jedisPoolConfig.setTestOnBorrow(true) //每次获得连接的进行测试

      jedisPool =  new JedisPool(jedisPoolConfig,"hadoop102",6379)
    }
    jedisPool.getResource
  }

  /**
   * 关闭连接
   *
   * @param client 连接对象
   */
  def closeJedisConn(client: Jedis): Unit = {
    if (client != null) {
      client.close()
    }
  }
}
